package com.bw.common.mvvm

import android.os.Bundle
import android.view.LayoutInflater
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.ViewDataBinding
import androidx.core.view.ViewCompat
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat
import java.lang.reflect.ParameterizedType

abstract class BaseViewActivity <VDB:ViewDataBinding>:AppCompatActivity(){

//    取出泛型参数列表
    private val type by lazy { (javaClass.genericSuperclass as ParameterizedType).actualTypeArguments }

    val binding by lazy {
        val clazz=type[0] as Class<VDB>
        val method=clazz.getMethod("inflate",LayoutInflater::class.java)
        method.invoke(null,layoutInflater) as VDB
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        
        // 应用主题
        //ThemeUtils.applyThemeToActivity(this)
        
        setContentView(binding.root)
        
        // 设置沉浸式状态栏
        //setupImmersiveStatusBar()
        
        initView()
        initData()
    }
//
//    /**
//     * 设置沉浸式状态栏
//     * 子类可以重写此方法来自定义状态栏行为
//     */
//    protected open fun setupImmersiveStatusBar() {
//        // 默认使用沉浸式状态栏
//        StatusBarUtils.setImmersiveStatusBar(this)
//
//        // 设置内容区域延伸到状态栏
//        StatusBarUtils.setContentInsetsExtended(this)
//
//        // 处理系统栏的padding
//        ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, insets ->
//            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
//            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
//            insets
//        }
//    }
//
//    /**
//     * 设置全屏模式
//     */
//    protected fun setFullScreen() {
//        StatusBarUtils.setFullScreen(this)
//    }
//
//    /**
//     * 设置状态栏颜色
//     */
//    protected fun setStatusBarColor(color: Int) {
//        StatusBarUtils.setStatusBarColor(this, color)
//    }
//
//    /**
//     * 设置导航栏颜色
//     */
//    protected fun setNavigationBarColor(color: Int) {
//        StatusBarUtils.setNavigationBarColor(this, color)
//    }
//
//    /**
//     * 切换主题模式
//     */
//    protected fun toggleThemeMode() {
//        ThemeUtils.toggleThemeMode(this)
//        // 重新创建Activity以应用新主题
//        recreate()
//    }
//
//    /**
//     * 设置主题模式
//     */
//    protected fun setThemeMode(themeMode: ThemeUtils.ThemeMode) {
//        ThemeUtils.setThemeMode(this, themeMode)
//        // 重新创建Activity以应用新主题
//        recreate()
//    }

    abstract fun initData()

    abstract fun initView()
}